#!/usr/bin/env python

# Copyright 2011 Google Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""Street Identity Demo Attribute Provider - API for retrieving street address."""

from google.appengine.dist import use_library
use_library('django', '1.2')
from google.appengine.ext import webapp
from google.appengine.ext import db
from django.utils import simplejson as json
import logging

from lib import authz
from lib import http
from lib import rest
from lib.billable import billable #@UnresolvedImport
from lib.loggable import loggable

import model
import app_params as application_params

__author__ = "Maciej Machulak"
__maintainer__ = "Maciej Machulak"
__email__ = "mmachulak@google.com"

__copyright__ = "Copyright 2011, Google Inc."
__license__ = "Apache License 2.0"
__version__ = "0.1"
__status__ = "Prototype"

class AddressHandler(webapp.RequestHandler):

    @rest.path('/{id}')
#    @authz.api_authz_required('read_address')
#    @billable('get_address')
    @loggable('get_address')      
    def get(self,path):
       
      identifier = self.rest_params['id']
      logging.debug('showing address for id %s ' % identifier)
      address = model.Address.get(db.Key(identifier))
      if address is None:
        logging.error('address could not be found - 403')
        self.response.set_status(403)
        return

      logging.debug('address found')
      jwt = self.request.get('jwt')
      logging.debug(jwt)
      
      # Check the token
      
      json_response = {}
      json_response['user'] = address.user.email
      json_response['type'] = address.type
      json_response['verified'] = address.verified
      json_response['address'] = address.address
      json_response['desc'] = address.desc
      json_response['provider'] = application_params.Config.APPLICATION_NAME

      self.response.headers[http.Header.content_type] = http.ContentType.json        
      self.response.out.write(json.dumps(json_response))  